package source.entity;


import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.io.Serializable;
import java.util.ArrayList;


@Data
@Accessors(chain = true)
@Component
public class Config implements Serializable {


    public ArrayList<String> tables = new ArrayList<>();

    private String resource = "/src/main/resources/";
    private String src = "/src/main/java/";
    private String testSrc = "/src/test/java/";
    private String tempate_path="/template/";

    private String port = "";   // 目标端口
    private String module_name="";
    private String module_name_sub;
    private String author = "";
    private String projectPath= System.getProperty("user.dir") +"/";
    private String registry="";    // 注册中心地址 为空则取消生成分布式相关 cfg.registry
    private String package_dir="source"; //基础包名
    private String package_dir_dis; /*包名路径 将com.xxx  拆分为 com/xxx*/
    private String t_prefix="";//表前缀 可去除前缀
    private String cfgName=""; // 配置包的名称
    String dis_mod_name="";  //分布式结果集生成模块路径
    private String feignService="User";  //远程接口调用的微服务名 建议使用模块名 xxx-user => user 首字母大写

    private boolean allTable=false; // 生成所有表

    private boolean redis=false; // 生成redis
    private boolean redisson=false; // 生成redisson
    private boolean springCache=false; // 生成springCache

    private boolean disId=false; //启用分布式id
    private boolean mybatis=false; //生成mybatis文件
    private boolean distribution=true;  //生成分布式common结果集
    private boolean nacos=false; // 使用nacos注册中心(配置中心)
    private boolean openFeign=false;   // 是否使用远程接口调用 false


    private boolean async=false; // 异步线程池
    private boolean scheduled=false; // 定时任务
    private boolean springTest=true; // 使用单元测试
    private boolean rabbitMQ=false; // 使用消息队列
    private boolean globalException=true; // 使用全局异常
    private boolean cors=true; // 使用跨域
    private boolean baseController=false; // 使用基础控制器
    private boolean webSocket=false; // 使用websocket netty

    @Value("${spring.datasource.druid.url}")
    private String dbUrl;

    @Value("${spring.datasource.druid.username}")
    private String dbUserName;

    @Value("${spring.datasource.druid.password}")
    private String dbPwd;

    @Value("${spring.datasource.druid.driver-class-name}")
    private String dbDriver;
}
